#pragma once
#include "vector3f.h"

class CPerspectiveCamera
{
public:
    CPerspectiveCamera(void);
    virtual ~CPerspectiveCamera(void);

    void Init(Vector3f vPos, float fFov, float fWidth, float fHeight, 
              Vector3f m_vUp    = Vector3f(0, 1, 0), 
              Vector3f m_vFront = Vector3f(0, 0, -1));

    // return the scale
    float GetScale()
    {
        return m_ffovScale;
    }

    const Vector3f GetPos()
    {
        return m_vPosition;
    }

    Vector3f GetUp()
    {
        return m_vUp;
    }

    Vector3f GetRight()
    {
        return m_vRight;
    }

    Vector3f m_vPosition; // camera position
    Vector3f m_vUp;       // Up vector
    Vector3f m_vFront;    // Front vector
    Vector3f m_vRight;    // Right vector  
    
    float m_fFov;
    float m_ffovScale;
    float m_fDistance;    // distance from camera to screen
};

